//
// Created by Xiuyuan Cao on 2023/2/22.
//
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <queue>
#include <limits>
using namespace std;
typedef long long ll;
ll mod=1e9+7;
bool check(vector<int>& segment,vector<int>& res,vector<vector<int>>& points){
int countRed=0;
int countBlue=0;
for(int i=0;i<points.size();i++){
if(points[i][0]>=segment[0]&&points[i][0]<=segment[1]){
if(res[points[i][1]]==1){
countBlue++;
}
else{
countRed++;
}
}
}
return abs(countBlue-countRed)<=1;
}
void solve(){
int n,m;
cin>>n;
cin>>m;
vector<vector<int>> points(n);
for(int i=0;i<n;i++){
int x;
cin>>x;
points[i]={x,i};
}
auto cmp=[](vector<int> p1,vector<int> p2){return p1[0]<p2[0];};
sort(points.begin(),points.end(),cmp);
vector<vector<int>> segments(m);
for(int i=0;i<m;i++){
int l,r;
cin>>l;
cin>>r;
segments[i]={l,r};
}
vector<int> res(n);
for(int i=0;i<n;i++){
res[points[i][1]]=(1-i%2);
}
for(vector<int> segment:segments){
if(check(segment,res,points)==false){
cout<<-1<<endl;
return;
}
}
for(int i:res){
cout<<i<<" ";
}
}
int main(){
solve();
}
461. Hamming Distance | 1748. Sum of Unique Elements |
897. Increasing Order Search Tree | 905. Sort Array By Parity |
1351. Count Negative Numbers in a Sorted Matrix | 617. Merge Two Binary Trees |
1450. Number of Students Doing Homework at a Given Time | 700. Search in a Binary Search Tree |
590. N-ary Tree Postorder Traversal | 589. N-ary Tree Preorder Traversal |
1299. Replace Elements with Greatest Element on Right Side | 1768. Merge Strings Alternately |
561. Array Partition I | 1374. Generate a String With Characters That Have Odd Counts |
1822. Sign of the Product of an Array | 1464. Maximum Product of Two Elements in an Array |
1323. Maximum 69 Number | 832. Flipping an Image |
1295. Find Numbers with Even Number of Digits | 1704. Determine if String Halves Are Alike |
1732. Find the Highest Altitude | 709. To Lower Case |
1688. Count of Matches in Tournament | 1684. Count the Number of Consistent Strings |
1588. Sum of All Odd Length Subarrays | 1662. Check If Two String Arrays are Equivalent |
1832. Check if the Sentence Is Pangram | 1678. Goal Parser Interpretation |
1389. Create Target Array in the Given Order | 1313. Decompress Run-Length Encoded List |